package com.by.controller;

import com.by.entity.ShopCartItem;
import com.by.entity.dto.UpdateItemNumberDto;
import com.by.entity.vo.ShopCartItemVo;
import com.by.service.ShopCartItemService;

import com.by.core.bean.ResultBean;
import com.by.core.controller.BaseController;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 购物车(ShopCartItem)表控制层
 *
 * @author makejava
 * @since 2025-04-11 14:42:25
 */
@RestController
@RequestMapping("/shopCartItem")
@Api(tags = "购物车接口")
public class ShopCartItemController extends BaseController {
    /**
     * 服务对象
     */
    @Resource
    private ShopCartItemService shopCartItemService;

    /**
     * 查询所有购物车数据
     * @param
     * @return
     */
    @GetMapping("/all")
    @ApiOperation("查询所有购物车数据")
    public ResultBean<List<ShopCartItemVo>> queryAll() {
        List<ShopCartItemVo> list =shopCartItemService.querryAll();
        return success("查询成功",list);

    }
    /**
     * 修改购物车商品数量和是否勾选
     * @param updateItemNumberDto
     * @return
     */
    @PutMapping("/updateItemNumber")
    @ApiOperation("修改购物车商品数量")
    public ResultBean updateItemNumber(@RequestBody UpdateItemNumberDto updateItemNumberDto) {
        Boolean result = shopCartItemService.updateNumber(updateItemNumberDto);
        return result?success("修改成功"):fail("修改失败");
    }

    /**
     * 删除购物车中的商品
     * @param cartItemId
     * @return
     */
    @DeleteMapping("/deleteCartItem")
    @ApiOperation("删除购物车中的商品")
    public ResultBean deleteCartItem(@RequestParam Integer cartItemId){
        Boolean result = shopCartItemService.removeByCartId(cartItemId);
        return result?success("删除成功"):fail("删除失败");
    }
    /**
     * 添加购物车中的商品
     * @param shopCartItem
     * @return
     */
    @PostMapping("/addCartItem")
    @ApiOperation("添加购物车中的商品")
    public ResultBean addCartItem(@RequestBody ShopCartItem shopCartItem){
        Boolean result = shopCartItemService.addCartItem(shopCartItem);
        return result?success("添加成功"):fail("添加失败");
    }

}

